// 混入进plus的方法 和umSdk中的方法名一致

import Util from '@/libs/framework/util.js'
import Config from "@/libs/config"

let MixinPlus = {
    // plus里自带isReady

    // 初始化
    init () {
        // 设置环境
        window.env = 'plus'

        Util.plusReady(() => {
            this._h5PlusReady()
        })
    },

    // 需要plus初始化完成触发plusready事件后才能拿到plus对象
    _h5PlusReady () {
        let h5plus = window.plus ? window.plus : {}

        window.plus = Object.assign({}, h5plus, this)
    },

    /**
     * 弹出图片预览
     * @param {array} files 图片对象
     * @param {Object} f7PhotoBrowser f7的photoBrowser接受的配置项
     * @param {Object} option 方法接受的配置项
     */
    qmPhotoBrowser (files, f7PhotoBrowser, option) {
        // photoBrowser的配置
        f7PhotoBrowser = Object.assign({}, {
            type: "popup",
            popupCloseLinkText: "关闭"
        }, f7PhotoBrowser)

        // 配置项
        option = Object.assign({}, {
            photoDownload: true, // 是否需要下载功能
            index: 0, // 打开的下标
        }, option)

        // 查看器的图片数据
        let photos = []

        files.map(item => {
            let url = ''

            if (item.url && item.url.startsWith("http")) {
                url = item.url
            } else {
                if (item.fileLocation) {
                    url = item.fileLocation;
                } else {
                    url = Config.api.download + '?attachmentId=' + item.attachmentId + `&championsoft=${encodeURIComponent(Util.$f7.data.authToken)}`;
                }
            }

            photos.push({
                url,
                caption: item.fileName
            })
        })

        // 查看器
        let photoBrowser = Util.$f7.photoBrowser.create({
            photos: photos,
            ...f7PhotoBrowser
        })

        photoBrowser.open(option.index)
        photoBrowser.on("closed", () => {
            photoBrowser.destroy()
        })

        if (option.photoDownload) {
            photoBrowser.on("opened", () => {
                Util.$f7
                    .$(".photo-browser .toolbar")
                    .append('<div class="photo-download"><a>保存到相册</a></div>');
            })

            setTimeout(function () {
                Util.$f7.$(".photo-download a").on("click", r => {
                    let fileData = files[photoBrowser.swiper.activeIndex]

                    Util.downloaderPhoto(fileData.url, Util, fileData.fileName)
                })
            }, 1000)
        }
    },

    // 下载附件
    downloadFile (fileName, attachmentId, vm, isPrint = false, options) {
        options = Object.assign({}, {
            askRedownload: false
        }, options)

        let url = `${Config.api.download}?attachmentId=${attachmentId}&championsoft=${encodeURIComponent(vm.$f7.data.authToken)}`

        Util.downloadFile(fileName, attachmentId, vm, url, isPrint, options)
    },

    // 拨号
    dial (mobile) {
        if (!mobile) return

        window.plus.device.dial(mobile, false)
    },

    /**
     * 打开链接
     * @param {*} plus plus的参数
     * @param {*} um 元知的参数
     * @param {*} vm vue实例
     */
    openLink (plus, um, vm) {
        vm.$f7router.navigate(plus.url)
    }
}

export default MixinPlus
